function myPromiseAll(promises){
    return new Promise((resolve,reject)=>{
        let result=[]
        let i=0
        let promiseArray=Array.from(promises) //原因见下
        if(promiseArray.length===0){
            resolve([])
            return
        }
        promiseArray.forEach((promise,index)=>{
            Promise.resolve(promise)
            .then((success)=>{
                result[index]=success
                i++
                if(i===promiseArray.length){
                    resolve(result)
                }
            })
            .catch((reason)=>{
                reject(reason)
            })
        })
    })
}

/*  需要处理 set 的情况，set 也是可递归的，promiseAll 默认要处理 

虽然 Set 可以被遍历，但它没有下标（index），
所以在你手写 Promise.all 时：

set.forEach((promise, index) => { ... }) // 这里的 index 实际上是 undefined！

所以我们需要：

let promiseArray = Array.from(set); // 转成数组


这样我们就能用 forEach((item, index) => {...}) 来确定每个结果该放在哪个位置了。
 */
